package com.fcscs.ecms.gwt.client;

import java.util.Date;
import java.util.List;
import java.util.Map;

import com.fcscs.ecms.domain.GlobalHotelEntity;
import com.fcscs.ecms.domain.GlobalLanguage;
import com.fcscs.ecms.domain.GlobalModuleInfo;
import com.fcscs.ecms.domain.GlobalModuleType.ModuleType;
import com.fcscs.ecms.domain.GlobalPicture;
import com.fcscs.ecms.domain.GlobalRoomType;
import com.fcscs.ecms.domain.GlobalText;
import com.fcscs.ecms.domain.HotelEntityView;
import com.fcscs.ecms.domain.MdlEntertainmentDynamicField;
import com.fcscs.ecms.domain.MdlEntertainmentElmts;
import com.fcscs.ecms.domain.MdlEntertainmentMain;
import com.fcscs.ecms.domain.MdlHelpMain;
import com.google.gwt.user.client.rpc.AsyncCallback;

public interface ECMSCommonServiceAsync {

	void saveGlobalLanguage(GlobalLanguage entity,
			AsyncCallback<GlobalLanguage> callback);

	void saveGlobalText(GlobalText entity, AsyncCallback<GlobalText> callback);

	void saveGlobalPicture(GlobalPicture entity,
			AsyncCallback<GlobalPicture> callback);

	void saveGlobalHotelEntity(GlobalHotelEntity entity,
			AsyncCallback<GlobalHotelEntity> callback);

	void saveGlobalHotelRoomTypeList(int idHotel, List<Integer> listRoomType,
			AsyncCallback<Integer> callback);

	void getRoomType(AsyncCallback<List<GlobalRoomType>> callback);

	void getText(int id, String langId, AsyncCallback<List<String>> callback);

	void getHotel(int id, AsyncCallback<List<GlobalHotelEntity>> callback);

	void getImage(int id, AsyncCallback<List<GlobalPicture>> callback);

	void getHotelRoomTypeList(int idHotel, AsyncCallback<List<Integer>> callback);

	void getHotels(AsyncCallback<List<GlobalHotelEntity>> callback);

	void getHotelEntityView(int idHotel, AsyncCallback<HotelEntityView> callback);

	void deleteHotelRoomTypeList(int idHotel, List<Integer> roomTypeList,
			AsyncCallback<Boolean> callback);

	void deleteHotel(int idHotel, AsyncCallback<Boolean> callback);

	void getEntertainment(int orgId, int propId, boolean isSchedule,
			AsyncCallback<MdlEntertainmentMain> callback);

	void getEntertainmentDynamicFieldList(
			AsyncCallback<List<MdlEntertainmentDynamicField>> callback);

	void getLanguageMap(AsyncCallback<Map<String, String>> callback);

	void saveEntertainment(int orgId, int propId, int userId,
			boolean isSchedule, Date startDate, Date startTime, Map<String, String> titleTextMap,
			Map<String, String> subTitleTextMap, byte[] menuPictureData,
			String url, List<MdlEntertainmentElmts> entElmtsList,
			AsyncCallback<MdlEntertainmentMain> callback);

	void updateGlobalPicture(GlobalPicture entity,
			AsyncCallback<GlobalPicture> callback);

	void getGlobalModuleInfoTemplateByName(int orgId, int propId,
			ModuleType type, String templateName,
			AsyncCallback<GlobalModuleInfo> callback);

	void saveEntertainmentTemplate(int orgId, int propId, int userId,
			Map<String, String> titleTextMap,
			Map<String, String> subTitleTextMap, byte[] menuPictureData,
			String url, List<MdlEntertainmentElmts> entElmtsList,
			String templateName, AsyncCallback<Void> callback);

	void getGlobalModuleInfoTemplateList(int orgId, int propId,
			ModuleType type, AsyncCallback<List<GlobalModuleInfo>> callback);

	void getEntertainment(int entMainId,
			AsyncCallback<MdlEntertainmentMain> callback);

	void saveGlobalHotelEntity(List<Map<String, String>> listtext,
			GlobalHotelEntity entity, GlobalPicture[] llistPic,
			AsyncCallback<Integer> callback);

	void editGlobalHotelEntity(List<Map<String, String>> listtext,
			GlobalHotelEntity entity, GlobalPicture[] llistPic,
			AsyncCallback<Integer> callback);

	void editGlobalHotelRoomType(int idHotel, List<Integer> oldlistRoomType,
			List<Integer> newRoomType, AsyncCallback<Integer> callback);

	void deleteHotelentity(GlobalHotelEntity entity,
			List<Integer> roomTypeList, AsyncCallback<Integer> callback);

	void getModuleHelp(int orgId, int propId, boolean isSchedule,
			AsyncCallback<GlobalModuleInfo> callback);

	void getModuleHelp(int moduleId, AsyncCallback<GlobalModuleInfo> callback);

	void saveModuleHelp(int orgId, int propId, int userId, boolean isSchedule,
			Date startDate, Date startTime, Map<String, String> titleTextMap,
			Map<String, String> subTitleTextMap, byte[] menuPictureData,
			List<MdlHelpMain> helpMainList,
			AsyncCallback<GlobalModuleInfo> callback);

	void saveHelpTemplate(int orgId, int propId, int userId,
			Map<String, String> titleMap, Map<String, String> subTitleMap,
			byte[] menuPictureData, List<MdlHelpMain> helpMainList,
			String templateName, AsyncCallback<Void> callback);
}
